/**
 * 初始化数据库操作
 * 关联模型（表）：
 */

const { sequelize } = require("./sequelize")
const user = require("../db/model/user")
const article = require("../db/model/article")
const comment = require('../db/model/comment')
const articleCate = require("./model/articleCate")

// 建立模型之间的联系
const initRelation = () => {
    // 用户和文章：一对多（一个用户可以有多个文章）
    user.hasMany(article, {
        onDelete: 'CASCADE'
    })
    article.belongsTo(user)

    article.hasMany(comment, {
        onDelete: 'CASCADE'
    })
    comment.belongsTo(article)

    articleCate.hasOne(article)
    article.belongsTo(articleCate)
}

// 同步数据库，sequelize.sync()
const initDB = () => {
    return new Promise(async (resolve, reject) => {
        try {
            // 初始化model关系
            initRelation()
            // 同步model到数据库
            await sequelize.sync();
            // sequelize.sync({ force: true }) - 将创建表,如果表已经存在,则将其首先删除
            // User.sync({ alter: true }) - 这将检查数据库中表的当前状态(它具有哪些列,它们的数据类型等),然后在表中进行必要的更改以使其与模型匹配.
            // User.sync() - 如果表不存在,则创建该表(如果已经存在,则不执行任何操作)
            resolve()
        } catch (error) {
            console.log(error);
            reject(error)
        }
    })
}
module.exports = initDB
